﻿using System;

namespace SeoulOpenApi.Toilet
{
	/// <summary>
	/// 서울시 Open API 화장실 정보
	/// </summary>
	public class ToiletService : BaseService
	{
		/// <summary>
		/// 서울시 API 서비스
		/// </summary>
		public ToiletService() : this(null, null) { }

		/// <summary>
		/// 서울시 API 서비스
		/// </summary>
		/// <param name="userId">서울시 API접속 ID</param>
		/// <param name="authKey">서울시로부터 발급받은 인증키</param>
		/// <remarks>인증키 발급: http://mobile.openapi.seoul.go.kr/ </remarks>
		public ToiletService(string userId, string authKey)
		{
			base.UserID = userId;
			base.AuthKey = authKey;
		}

		/// <summary>
		/// 서비스 항목에 따라 데이터 가져오기
		/// </summary>
		/// <param name="name">서비스명</param>
		/// <returns></returns>
		protected override SoapData getSoapData(string name)
		{
			var soap = new SoapData { Address = new Uri(ApiUrlPrefix + "ToiletService?wsdl", UriKind.Absolute) };
			switch (name)
			{
				case "ListToiletPoi":
					soap.Name = "ListToiletPoi";
					soap.Description = "화장실 공공정보 POI 정보조회";
					soap.SoapBody = "<ns:ListToiletPoi xmlns:ns='http://service.toilet.openapi.ubizvalley.com'>" +
									"<ns:uk>{0}</ns:uk>" + // 변수: 단말기 Unique값[필수]
									"<ns:frnum>{1}</ns:frnum>" + // 변수: 총건수중 시작건수[필수]
									"<ns:tonum>{2}</ns:tonum>" + // 변수: 충건수중 종료건수[필수]
									"</ns:ListToiletPoi>";
					break;
			}

			// 해당 서비스가 없는 경우
			if (String.IsNullOrEmpty(soap.Name))
				throw new Exception(name + " not found.");

			return soap;
		}

	}
}
